home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir42 / a2z.zip / A2ZLAN.$$$ < prev    next >
Text File  |  1993-09-04  |  7KB  |  263 lines

  1.  
  2.  ╔══════════════════════════════════════════════════╗
  3.  ║        Application Programming Language Set      ║
  4.  ╚══════════════════════════════════════════════════╝
  5.  
  6.  Operand 1                     Operator   Operand 2
  7.  
  8.  LINK KEY[DRIVE:FILE]             =       WRITE
  9.  KEY                              <>      KEY[DRIVE:FILE]
  10.  STRING(KEY,POS,LEN)              >       STRING(KEY,POS,LEN)
  11.  STRING(KEY[DRIVE:FILE],POS,LEN)  <=      STRING(KEY[DRIVE:FILE],POS,LEN)
  12.  IF KEY                           >=      NUMERIC VALUE
  13.  ELSE                             <=      'CHARACTER STRING'
  14.  ENDIF                            EQ      BLANK
  15.  ABORT                            NE      LOWER
  16.                                   GT      UPPER
  17.                                   LT      CAPS
  18.                                   GE      LAST(KEY)
  19.                                   LE      CONCAT(KEY,KEY)
  20.                                           PARSE(KEY)
  21.                                           SYSTIME              Operand 3
  22.                                           SYSDATE
  23.                                           SYSDMIL              1-9R
  24.                                           +                    1-9T
  25.                                           -                    AND
  26.                                           *                    OR
  27.                                           /                    THEN
  28.  
  29.  ╔════════════════════════════╗
  30.  ║       Compile Example:     ║
  31.  ╚════════════════════════════╝
  32.  
  33.  . . . . IF RECORD STATUS = BLANK THEN
  34.  .        MAX QTY = 0
  35.  .        LINK REC[C:LA] = REC
  36.  .         LA QTY = LA QTY[C:LA]
  37.  .   . . . IF LA QTY > MAX QTY THEN
  38.  .   .      MAX QTY = LA QTY
  39.  .   .      LOC = LA
  40.  .   . . . ENDIF
  41.  .        LINK REC[C:KC] = REC
  42.  .         KC QTY = KC QTY[C:KC]
  43.  .   . . . IF KC QTY > MAX QTY THEN
  44.  .   .      MAX QTY = KC QTY
  45.  .   .      LOC = KC
  46.  .   . . . ENDIF
  47.  .        LINK REC[C:NY] = REC
  48.  .         NY QTY = NY QTY[C:NY]
  49.  .   . . . IF NY QTY > MAX QTY THEN
  50.  .   .      MAX QTY = NY QTY
  51.  .   .      LOC = NY
  52.  .   . . . ENDIF
  53.  .        TOT QTY = LA QTY + KC QTY + NY QTY
  54.  . . . . ENDIF
  55.  
  56.  
  57.  ╔══════════════╗
  58.  ║  LINK Rules  ║
  59.  ╚══════════════╝
  60.  
  61.  Format:     keyname[drive:file] = keyname
  62.                                   
  63.              LINK                  ROOT ARG
  64.  
  65.  
  66.              keyname[drive:file] = constant
  67.                                   
  68.              LINK                  LINK ARG
  69.  
  70.  
  71.  
  72.  
  73.  One to One LINK
  74.  
  75.  ┌──────────┐            ┌──────────┐
  76.  │Rec 1     │<───LINK───>│Rec 1     │
  77.  └──────────┘            └──────────┘
  78.  ┌──────────┐            ┌──────────┐
  79.  │Rec 2     │<───LINK───>│Rec 2     │
  80.  └──────────┘            └──────────┘
  81.  ROOT                    LINK
  82.  
  83.  Example:  LINK REC[C:SALE] = REC
  84.  
  85.  
  86.  
  87.  One to One LINK
  88.  
  89.  ┌──────────┐            ┌──────────┐
  90.  │Rec 1     │<───LINK───>│  Write   │
  91.  └──────────┘            └──────────┘
  92.  ┌──────────┐            ┌──────────┐
  93.  │Rec 2     │<───LINK───>│  Write   │
  94.  └──────────┘            └──────────┘
  95.  ROOT                    LINK
  96.  
  97.  Example:  LINK REC[C:SALE] = WRITE
  98.  
  99.  ┌──────────────────────────────────────────────────────┐
  100.  │  A link to a target data base with a search argument │
  101.  │  of 'WRITE' will WRITE a new file or APPEND existing │
  102.  └──────────────────────────────────────────────────────┘
  103.  
  104.  
  105.  
  106.  One to One LINK
  107.  
  108.  ┌──────────┐            ┌──────────┐
  109.  │Empl 1    │<─LINK──┐ ┌>│ Empl 2   │
  110.  └──────────┘       ┌│─┘ └──────────┘
  111.  ┌──────────┐       ││   ┌──────────┐
  112.  │Empl 2    │<─LINK─┘└──>│ Empl 1   │
  113.  └──────────┘            └──────────┘
  114.  ROOT                    LINK
  115.  
  116.  Example:  LINK EMPL[C:PERS] = EMPL
  117.  
  118.  the LINK record is LINKed by looking for a match
  119.  based on the ROOT argument.  Either file may be indexed.
  120.  A non─indexed LINK file will be searched sequentially.
  121.  An indexed LINK file will be binary searched
  122.  
  123.  
  124.  
  125.  One to Many LINK
  126.  
  127.  ┌──────────┐            ┌──────────┐
  128.  │Rec 1     │<───LINK─┌──│Rec 1     │
  129.  └──────────┘         │  └──────────┘
  130.  ┌──────────┐         │
  131.  │Rec 2     │<───LINK─┘
  132.  └──────────┘
  133.  ROOT                    LINK
  134.  
  135.  Example:  LINK REC[C:LETR] = 1
  136.  
  137.  for each ROOT record, REC 1 is LINKed
  138.  
  139.  can be used to propagate data from one file to
  140.  many files, for example, copying a form letter
  141.  from one record and merging it with each empl─
  142.  oyee record to create a mail─merged letter
  143.  
  144.  
  145.  
  146.  Many to One LINK
  147.  
  148.  ┌──────────┐            ┌──────────┐
  149.  │Rec 1     │────LINK─┌─>│Rec 1     │
  150.  └──────────┘         │  └──────────┘
  151.  ┌──────────┐         │
  152.  │Rec 2     │────LINK─┘
  153.  └──────────┘
  154.  ROOT                    LINK
  155.  
  156.  Example:  LINK REC[C:1990] = 1
  157.  
  158.  LINKED REC 1 is updated by each ROOT record
  159.  
  160.  can be used to accumulate data from many records
  161.  to one record, for example, creating a statistics
  162.  record by accumulating data from each ROOT record
  163.  
  164.  
  165.  
  166.  RECORD STATUS is a system KEY reflecting whether the
  167.  record is 'ACTIVE' or INACTIVE'
  168.  
  169.  placing an 'X' in RECORD STATUS flags record as 'INACTIVE'
  170.  
  171.  a record with an 'X' in RECORD STATUS will be bypassed by LIST unless
  172.  it is an argument or has been list-ordered
  173.  
  174.  it is the responsibility of the data base programmer to test
  175.  the RECORD STATUS field to see if the record is 'ACTIVE'
  176.  
  177.  
  178.  RECORD LINKED is a system KEY reflecting whether a LINK
  179.  was successful [Y]  or  unsuccessful [N]
  180.  
  181.  it is the responsibility of the data base programmer to test
  182.  the RECORD LINKED field after a LINK to program appropriate
  183.  action:
  184.  
  185.      LINK ZIP[C:ZIP] = ZIP
  186.  . . IF RECORD LINKED = Y THEN
  187.  .     CITY = CITY[C:ZIP]
  188.  .     STATE = STATE[C:STATE]
  189.  . . ENDIF
  190.  
  191.  
  192.  to CAUSE an IMMEDIATE ABORT following the RECORD LINKED = N
  193.  condition, code the following:
  194.  
  195.  LINK ZIP[C:ZIP] = ZIP
  196.  IF RECORD LINKED = N THEN
  197.  . . . ABORT
  198.  .     CITY = CITY[C:ZIP]
  199.  .     STATE = STATE[C:STATE]
  200.  .     LINK REC[C:LAB] = WRITE
  201.  .     L1[C:LAB] = CONCAT(CITY,@,STATE)
  202.  .
  203.  
  204.  ENDIF
  205.  
  206.  
  207.  ╔══════════════════════════════╗
  208.  ║  CONSTANT to KEY MOVE        ║
  209.  ╚══════════════════════════════╝
  210.  
  211.  ■  TARGET field is on left side of '=' OPERATOR
  212.  
  213.  ■  SOURCE field is on right side of '=' OPERATOR
  214.  
  215.  ■  TARGET must be a valid KEYNAME
  216.  
  217.  ■  SOURCE may be a NUMERIC or CHARACTER constant
  218.  
  219.  ■  CHARACTER constants should be enclosed by QUOTES
  220.  
  221.  ■  CHARACTER constants longer than TARGET field are TRUNCATED
  222.  
  223.  ■  CHARACTER data MAY NOT be moved to a NUMERIC field
  224.  
  225.     Examples:   NAME = 'BLOW JOE A'
  226.                 RATE = 9.50
  227.  
  228.  
  229.  ╔═══════════════════╗
  230.  ║  KEY to KEY move  ║
  231.  ╚═══════════════════╝
  232.  
  233.  ■  TARGET must be a valid KEYNAME
  234.  
  235.  ■  SOURCE must be a valid KEYNAME
  236.  
  237.     Example:   VALU = SALES
  238.  
  239.  
  240.  ╔═══════════════════╗
  241.  ║  KEY CALCULATION  ║
  242.  ╚═══════════════════╝
  243.  
  244.  ■  TARGET must be a valid KEYNAME
  245.  
  246.  ■  SOURCE can be a valid KEYNAME or a CONSTANT
  247.  
  248.  ■  CONSTANTS may be NUMERIC only
  249.  
  250.  ■  TARGET field may also be a SOURCE field    VALU = VALU + 1
  251.  
  252.  ■  NUMERIC constants may contain imbedded decimal point
  253.  
  254.  ■  ALL calculations are based on WHOLE NUMBERS
  255.  
  256.  ■  TRUNCATION and ROUNDING OPERATORS resolve DECIMAL PLACEMENT
  257.  
  258.     R = Round             1-9  Decimal Places
  259.     T = Truncate          1-9  Decimal Places
  260.  
  261.     Example:   TOTAL = SALE * 1.06 2R
  262.      *
  263.